// 给定一个无符号整数n， 统计其对应二进制表达式中1的个数
// 解法1： 循环按位计算， 对整数n的每一位进行按位与运算，并统计结果
function hammingWeight(n) {
    let ans = 0
    while (n) {
        ans += (n & 1)
        n = n >> 1
    }
    return ans
}

console.log(hammingWeight(11))

// 将n的二进制中最低位从1变为0，利用这个位运算，不断将n中最低位的1变为0，直到n变为0，其变换次数就是我们要求的结果
function hammingWeight2(n) {
    let ans = 0
    while (n) {
        n &= n - 1
        ans++
    }
    return ans
}

console.log(hammingWeight2(11))